from PIL import Image
import os

def png_to_ico(png_path, ico_path, sizes=None):
    """
    将PNG图片转换为ICO格式
    
    Args:
        png_path: PNG文件路径
        ico_path: 输出的ICO文件路径
        sizes: 图标尺寸列表，默认为[16, 32, 48, 64, 128, 256]
    """
    if sizes is None:
        sizes = [16, 32, 48, 64, 128, 256]
    
    try:
        # 打开原始图片
        img = Image.open(png_path)
        
        # 创建不同尺寸的图标
        icon_sizes = []
        for size in sizes:
            # 调整图片尺寸
            resized_img = img.resize((size, size), Image.Resampling.LANCZOS)
            icon_sizes.append(resized_img)
        
        # 保存为ICO格式
        icon_sizes[0].save(
            ico_path,
            format='ICO',
            sizes=[(size, size) for size in sizes],
            append_images=icon_sizes[1:] if len(icon_sizes) > 1 else []
        )
        
        print(f"成功将 {png_path} 转换为 {ico_path}")
        return True
        
    except Exception as e:
        print(f"转换失败: {e}")
        return False

def create_default_icon():
    """创建一个默认的Bing壁纸图标"""
    from PIL import Image, ImageDraw
    
    # 创建一个256x256的图像
    img = Image.new('RGBA', (256, 256), (30, 60, 114, 255))  # 深蓝色背景
    draw = ImageDraw.Draw(img)
    
    # 绘制一个简单的壁纸图标
    # 外圆
    draw.ellipse([20, 20, 236, 236], fill=(52, 152, 219, 255), outline=(41, 128, 185, 255), width=8)
    
    # 内圆
    draw.ellipse([50, 50, 206, 206], fill=(231, 76, 60, 255), outline=(192, 57, 43, 255), width=6)
    
    # 山脉形状
    points = [(80, 150), (128, 100), (176, 150), (150, 180), (106, 180)]
    draw.polygon(points, fill=(46, 204, 113, 255))
    
    # 太阳
    draw.ellipse([180, 70, 210, 100], fill=(241, 196, 15, 255))
    
    # 保存为PNG和ICO
    img.save('default_icon.png', 'PNG')
    png_to_ico('default_icon.png', 'icon.ico')
    
    print("已创建默认图标: icon.ico")

if __name__ == "__main__":
    # 检查是否已存在icon.ico
    if os.path.exists('icon.ico'):
        print("已存在 icon.ico 文件")
    else:
        # 检查是否有PNG文件
        png_files = [f for f in os.listdir('.') if f.lower().endswith('.png')]
        
        if png_files:
            # 使用第一个找到的PNG文件
            png_file = png_files[0]
            print(f"找到PNG文件: {png_file}")
            png_to_ico(png_file, 'icon.ico')
        else:
            # 创建默认图标
            print("未找到PNG文件，创建默认图标...")
            create_default_icon()